package top.tenebrous.termbor.rpc.common.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RpcReference {

    String version() default "1.0.0";

    String registryType() default "nacos";

    String registryAddress() default "127.0.0.1:8848";

    String loadBalanceType() default "random";

    /**
     * 序列号类型，目前的类型包含：protostuff、kryo、json、jdk、hessian2、fst
     */
    String serializationType() default "protostuff";

    long timeout() default 5000;

    /**
     * 是否异步执行
     */
    boolean async() default false;

    /**
     * 是否单向调用
     */
    boolean oneway() default false;

    /**
     * 代理类型，目前的类型包含：jdk、cglib javassist
     */
    String proxy() default "jdk";

    /**
     * 服务分组
     */
    String group() default "";

}
